#include "client.h"


int main()
{
//    initLog(1024);
    initLog(1024);
    //通过配置文件获得IP以及端口

    char* ip;

    char* port;

    ip=parseINI("ip",NULL);

   port=parseINI("port",NULL);
    
    int ret;
    //ip="192.168.237.128";
    //port="8080";
    //建立连接
    int socket_fd;
    connect_serve(ip,port,&socket_fd);
    //创建结构体并初始化
    struct client_info info;
    struct login_status stat;
    memset(&stat,0,sizeof(stat));
    int exit_status=0;

    //while循环执行逻辑
    while(1)
    {
        printf("\n*******************************这是一条分割线***************************\n");
        memset(&info,0,sizeof(info));
        if(stat.login==false)
        {
            printf("检测到您还没有登录\n请选择你的操作:\n");
            printf("0:退出   1:登录   2：注册\n");
            int choose;
            //获取登录的输入
           if( get_choose(&choose)!=0)
           {
               DEBUG_LOG("获取登录选项失败，用户输入错误\n");
           }
            //执行输入
            if(execute_choose(choose,&stat,&exit_status,&info,socket_fd)!=0)
            {
               DEBUG_LOG("命令执行出错\n");
            }
            if(exit_status==1)
            {
              INFO_LOG("用户退出程序；退出时间：%s\n",get_current_time());
                break;
            }
        }
        else
        {
            printf("/%s->  ",stat.path);
            if((get_stdin(&stat,&info))!=0)
            {
             DEBUG_LOG("读取命令出错\n");
            }
            if(info.command!=ERR&&info.command!=EXIT)
            {
                //if语句里面写入
            send(socket_fd,&info.command,sizeof(int),MSG_NOSIGNAL);
            }
            switch(info.command)
            {
            case RM:
                rmClient(socket_fd,info.protocol);
                break;
            case LS:
                lsClient(socket_fd,info.protocol);
                break;
            case MKDIR:
                //printf("client.c:%s\n",info.protocol);
                mkdirClient(socket_fd,info.protocol);
                break;
            case PUTS:
                {
                char filename[100];
                //处理info结构体分割
                getparama(&info,filename);
                put_serverfile(socket_fd,filename,&info);
                break;
                }
            case GETS: {
              char filename[100];
              //处理info结构体分割
              getparama(&info, filename);
              get_serverfile(socket_fd, filename, &info);
              break;
            }
            case CD:
                cdClient(socket_fd,info.protocol,&stat);
                break;
            case PWD:
                pwdClient(&stat);
                break;
            case ERR:
                printf("您的输入格式有问题，请重新输入\n");
                break;
            case EXIT:
                printf("您选择退出登录\n");
                exit(0);
                break;
            default:
                break;
            }
        }
    }
    printf("你选择退出，进程结束\n");
}





